<?


/*** инициализация класса админки ***/
	Admin::$Config =& Core::$Modules['admin'] ;
	Admin::$img_folder =
	Admin::$images_url =& Admin::$Config->images_url;
	
	
	//Admin::$Config =& Core::$Modules['admin'] ;

	
/*** описание класса админки ***/
 
class Admin {

	// конфиги модуля, указатель на Core::$Modules['admin'] 
	static $Config = null;
	
	// список зарегистрированных визуальных редакторов 
	static $Wysiwygs = array();
	
	// url-путь к папке с картинками админки
	static $images_url='';
	static $img_folder='';
	
	
	// контроллер админки
	static function controller(&$Page)
	{
		//pr($Page);
		//pr(Admin::$Config);
		
		
		// если у пользователя нет прав админа, и его действие не login - редиректим его на действие-страницу логина
		$User =& User::$User;
		// pr($User);
		if(	$User->is_admin==false
			AND Core::$Request->action != 'login'
			)
			{
				
				ReturnURL::reject('/admin/login/', 1); 
				// ReturnURL::reject('/admin/login/?'.ReturnURL::$suffix , 1); 
				
				
				echo "<br/><center>Подождите, Вы не авторизованы...</center><br/><br/>";
				exit;
			}
		// pr($User);
		
		// при успешной авторизации в админке
		// сохраняем флаг админа в текущем бразере на 30 дней
		Cookie::set('cmsadmin', 1, 30);
		
		/* вычисляем объект со свойствами запрошенного действия */
		
		// сначала предполагаем, что вызвано действие модуля Admin
		$Page->action = Admin::get_action('admin', Core::$Request->action);
		$action = &$Page->action;
		// pr($action);
		
		// если такого действия нет в модуле Admin, то интерпретируем запрос по другому: 2я секция URL - это модуль, 3я секция - его админ-действие 
		if (!$action)
		{
			$sections 	= Core::$Request->sections;
			$action = Admin::get_action($sections[1], $sections[2]);
			array_shift(Core::$Request->args);			
		}
		// pr($action);
		
		// если такого действия нет - сообщаем об ошибке
		if (!$action)
			$action = Admin::get_action('admin', 'error404');	
		//pr($action);
		
		$Page->title = isset($action->h1)? $action->h1 : val($action->title);
		
		// вычисляем шаблоны для отображения результатов действия
		//$Page->templ_dir	= Admin::$Config->templ_dir;
		//$Page->templ_url 	= Admin::$Config->templ_url;
		//pr(Admin::$Config);
		//pr(Core::$Modules);
		
		$Page->page_template 		
			= Admin::$Config->templ_dir."/page.php";
		$Page->page_template_folder	
			= Admin::$Config->templ_url;
		
		$Page->content_template = 
			Core::$Modules[$action->module]->module_dir
			."/admin_templates/{$action->id}.php";	
		
		$Page->content_template_folder 	= 
			Core::$Modules[$action->module]->module_dir_url
			."/admin_templates";
		
		// pr($Page);
		
	
		
		// если модуль (генератор данных) не Admin 
		if ($action->module !='admin')
		{
			// пытаемся сначала стандартно сгенерировать страницу админки
			$Page->toolbar_id = $action->module;
			if ($action->id == 'settings') $Page->toolbar_id = 'settings';
			
			if(val($action->h1)) $Page->title = $action->h1;
			// $Page->data='';
			
			// вызываем контроллер модуля, если такой есть 
			if(method_exists($action->module, 'admin_controller'))
				call_user_func(
					array($action->module, 'admin_controller'), 
					$Page 
					);
			
			
			
		}	
		//pr(1);
		
		// иначе обрабатываем стандартные действия модуля Admin
		else	
		switch ($action->id)
		{
			case ('login'):
				//if($_POST) 
				 // @pr_($_POST, $User, $_SESSION, $_COOKIE );
				
				if($_POST && $User->is_admin)
					ReturnURL::redirect('/admin/');
				
				break;	
			case ('logout'):
				
				User::logout();
				redirect('/admin/login/');
				
				break;	
			
			case ('index'):
			
				$Page->content = 'Добро пожаловать!';
				break;
			
			case ('error404'):
				
				$Page->content = "
				<div style='color:#ff0000;text-align:center;'>
				Ошибка! Запрошенная страница не найдена.
				</div>";
				
				break;
			
			
			case ('settings'):
				//pr(1);
				$subpages = Admin::get_pages('menu=toolbar_settings');
				$indexpage = (array)reset($subpages);
				//pr($indexpage);
				
				if ($indexpage && $indexpage['url']!='/admin/settings'
					&& !strstr($indexpage['url'], '/admin/settings/')
					) 
					redirect($indexpage['url']);
				
				break;
				
				
			case ('admin_settings'):	
				Admin::action_settings(self::$Config->id);
				
				//pr($Page->data);
				break;
			
			
			case ('widget_settings'):
				
				$widget_id = val(Core::$Request->args[0]);
				$page_id = val(Core::$Request->args[1]);
				
					if (!$widget_id) exit;
				$widget = $Page->widget =& Core::$Widgets[$widget_id];
					if (!$widget || !val($widget->module)) exit;
				
				$Page->page_template 	= 
					Admin::$Config->templ_dir
					."/page widget_settings.php";
				$Page->content_template = 
					Core::$Modules[$widget->module]->module_dir 
					."/admin_templates/widget_settings {$widget_id}.php";
				//pr($widget->module);
				
				if (method_exists($widget->module, 'widget_settings'))
					call_user_func(
						array($widget->module, 'widget_settings'), 
						$Page
					);
				$Page->data = $_GET;
				
				//pr($Page);
				//$Page->data->content = 'widget_settings';
				//$Page->page_template = 'widget_settings';
				
				break;	
			
			
			default:
			
				break;	
		
		}
		
		
		if (empty($Page->data))
			$Page->data = !empty($data)? (object)$data : (object)array();
		//pr($Page);
	
	}
	
	// добавляет страницу/пункт в меню админки
	static function add_page($page_params)
	{
		if (!self::$admin_pages) self::get_pages();
		
		self::$admin_pages[] = (object)$page_params;
		
		//pr(self::$admin_pages);
	}
	
	static $admin_pages=array();
	
	// возвращает массив зарегистрированных модулями админ-страниц 
	static function get_pages($params=null)
	{
		$admin_pages =& self::$admin_pages;
		
		//pr($admin_pages);
		
		if (!$admin_pages)
		{
			$admin_pages=array();// временная переменная для списка страниц
			//pr(Core::$Modules);
			
			// собираем все админ-действия и страницы из конфигов модулей 
			foreach (Core::$Modules as $module)
			{	
				if(empty($module->admin_pages)) continue;
				
				foreach ($module->admin_pages as $page_id=>$page)
				{
					if (empty($page)) continue;
					
					$page_template = array(	
							'module' => '',
							'id'	 => is_string($page)? $page : '',
							'url'	 =>	'%url%',		 
							); 
					if (is_array($page))
						$page = (object)array_merge($page_template, $page );
					else 
						$page = (object) $page_template;
						
					$page->module = $module->id;
					if (empty($page->id)) $page->id=$page_id;
					
					// вычисляем url для пункта меню
					if ($page->module == 'admin')
						$page_url  = "/admin/$page->id";	
					elseif ($page->id == 'index' || !empty($page->is_index))
						$page_url   = "/admin/$page->module/";
					else	
						$page_url   = "/admin/$page->module/$page->id";	
					
					$page->url = str_replace('%url%', $page_url, $page->url);
					
					
					$page->module_url = "/admin/$page->module";
					
					$page->show 	= isset($page->show)? $page->show : 1;
					
					$page->menu 	= val($page->menu) ? 
						explode(',', $page->menu) : array();
					
					foreach($page->menu as &$menu_id) 
							$menu_id=trim($menu_id);
							
					if (!isset($page->position)) $page->position=0;
					
					$admin_pages[] = $page;
				}	
			}		
			// pr($admin_pages);
			
			// интерпретируем спец.выражения в свойствах действий
			unset($page);
			foreach ($admin_pages as &$page)
			{
				// pr($page);
				//echo $page->position."| ";
				
				// интерпретируем position:
				//  можно задать позицию пункта в меню не цифроа а относительно других пунктов, в формате 'menu/module/action':
				// 'position'	=> 'after=top_menu/blog/edit_post',
				// или 
				// 'position'	=> 'after=top_menu/blog/&before=top_menu/files/',
				
				if ( ($pos= &$page->position)
					&& !is_numeric($pos) && is_string($pos)
					)
					{
						parse_str($pos, $pos_params);
						// pr($pos_params);
												
						$pos=0;
						
						// если задан параметр after - ищем наибольшую позицию и прибавляем единицу
						if (!empty($pos_params['after']))
						{
							list($after_menu, $after_module, $after_id) = 
								explode('/', $pos_params['after'].'//');

							foreach ($admin_pages as $p)
							{ 
								if (!in_array($after_menu,$p->menu))
									continue;
								if ($after_module != $p->module)
									continue;
								if ($after_id && $after_id != $p->id )
									continue;
								if ($p->position < $pos) 
									continue;
								
								$pos=$p->position+1;
							}
						}
						
						// если задан параметр before - ищем наименьшую позицию и вычитаем единицу
						if (!empty($pos_params['before']))
						{
							list($before_menu, $before_module, $before_id) = 
								explode('/', $pos_params['before'].'//');

							foreach ($admin_pages as $p)
							{ 
								if (!in_array($before_menu,$p->menu))
									continue;
								if ($before_module != $p->module)
									continue;
								if ($before_id && $before_id != $p->id )
									continue;
								if ($pos && $p->position > $pos) 
									continue;
								
								$pos=$p->position-1;
							}
						}
					} // конец парсинка position
				
			}
			unset($page);
			
			//pr($admin_pages);
			
			
			// сортируем ссылки в админ меню по свойству 'position'
			array_sortby($admin_pages, 'position, module, id');
			//
			// pr($admin_pages);
			
		}
		// pr($admin_pages);
		// pr($params);
		
		
		if (!$params) return $admin_pages;
		
		
		//echo "$params | <br>";
		// преобразуем параметры в объект
		if (is_string($params)) parse_str($params, $params);
		$params = (object)$params;
		
		
		
		// теперь отбираем в результат только нужные страницы
		$result = array();
		
		//pr($admin_pages);
		
		foreach ($admin_pages as $page)
		{
			/* эта краткая запись алгоритма не работает как надо...
			$page=(array)$page;
			//print_r(array_keys($page));
			foreach ($page as $key=>$val)
				if (isset($params[$key])) 
				{
					if (is_string($val) 
						&& $params[$key] != $page[$key]
						) continue 2;
					if (is_array($val)
						&& !in_array( $params[$key], $page[$key])  
						) continue 2;
				}
			*/
			
			//print_r($page); echo"|<br/>";
			
			// if($params->menu=='toolbar_blog')
			// if (in_array( 'toolbar_blog', $page->menu ) 
			// if($page->menu[0]=='toolbar_blog' )
			// echo "$page->id | ";
			
			if (!empty($params->menu) 
				&& !in_array( $params->menu, $page->menu )  
				) continue; 
			
			
			if (!empty($params->id) 
				&& $params->id != $page->id    
				) continue;
			if (!empty($params->module) 
				&& $params->module != $page->module   
				) continue;
			
			
			if (isset($params->parent_id) 
				&& $params->parent_id != val($page->parent_id)  
				) continue;
			if (isset($params->is_index) 
				&& $params->is_index != val($page->is_index)  
				) continue;
			if (isset($params->show) 
				&& $params->show != $page->show  
				) continue;
			
			if ($page)
			$result[] = (object)$page;
		
		}
		// exit;
		// pr($result);
		
		
		// сортируем ссылки в админ меню по свойству 'position'
		array_sortby($result, 'position, module, id');
		
		return $result;
	}
	
	
	static function get_index_action()
	{
		$admin_pages = Admin::get_pages('menu=top_menu&show=1');
		//pr($admin_pages);
		
		$index_action = reset($admin_pages);
		//$index_action = $index_action->id;
		//pr($index_action);
		
		return $index_action;
	}
	
	// 
	static function  get_settings($module_id)
	{
		
	}
	
	static function get_action($module_id, $page_id)
	{
		// pr($module_id, $page_id);
		
		if (!$page_id) $page_id='index';
		if ($module_id=='admin' && $page_id=='index')
			$page = self::get_index_action();
		else
		{
			$page= Admin::get_pages("module=$module_id&id=$page_id");
			// pr($page);
			
			if ($page) $page = reset($page);
		}
		if (!$page && $page_id=='index')
		{
			//$a= Admin::get_pages("module=$module_id&is_index=1")
			// $page = $a? reset($a) : false;
			$page = Admin::get_pages("module=$module_id&is_index=1");
			if ($page) $page = reset($page);
		}
		if (!empty($page->rewrite_id))
			$page->id = $page->rewrite_id;
		
		return $page;
	}
	
	
	static function action_settings($module_id)
	{
		$Page =& Core::$Page;
		$Page->toolbar_id = 'settings';
		
		// получаем текущие настройки запрошенного модуля
		$Page->data = Config($module_id);
		//pr($Page->data);
		//pr($Page);
		
		// обрабатываем данные, переданные из формы настроек
		if (!empty($_POST['data']) && is_array($_POST['data']))
		{
			$post_data = $_POST['data'];
			// pr($_POST);
			
			// TODO: сделать проверку на ошибочные данные, исходя из мета свойств для полей, переданных из формы или описанных в конфигах модуля
			
			// ... сохраняем данные
			// ... и формируем сообщение о результате
			if (empty($Page->error))
			{
				save_array(DATA_DIR. "/settings/$module_id.php", $post_data);
				$Page->message = 'Данные успешно сохранены';
			}	
			
			$Page->data = (object) array_merge((array)$Page->data, $post_data);
		}
		
		return $Page->data;
	}

	

	//static function: display a menudiv.
	//-------------------
	static function showmenudiv($title, $text, $image, $url=false, $blank = false, $more = null) {
	?>
		<div class="menudiv">
			<span>
				<?if($url){?><a href="<?php echo $url; ?>" <?php if ($blank == true) echo ' target="_blank"'; ?>><img src="<?php echo $image; ?>" alt="" /></a>
				<?}else{?>
				<img src="<?php echo $image; ?>" alt="" />
				<?}?>
				
			</span>
			<span>
				<span>
					<?if($url){?>
					<a href="<?php echo $url; ?>" <?php if ($blank == true) echo 'target="_blank"'; ?>><?php echo $title; ?></a><?}else{ echo "$title";
					
					}?>
				</span>
				<?php if($more != null): ?>
					<span class="more"><?php echo $more; ?></span>
				<?php endif; ?>
				<br />
				<?php if($text != null) echo $text; ?>
			</span>
		</div>
	<?php
	}
	
	
	
		
	// show submit buttons - save&exit ("ОК"), save ("Apply") & back ("Cancel")
	// 
	static function show_submits($params=array() ) 
	{
		global $lang;
		
		$reload 	 = isset($params['reload'])	? $params['reload'] : true;
		$show_ok 	 = isset($params['show_ok'])	? $params['show_ok'] : true;
		$show_apply  = isset($params['show_apply'])	? $params['show_apply'] : true;
		$show_cancel = isset($params['show_cancel'])? $params['show_cancel'] : true;
		
		
		// указываем, куда вернуться после сохранения формы
		
		$return_url = val($params['url']) ? $params['url'] 
						: (ReturnURL::$url ? ReturnURL::$url  
							: ( ($module_url= val(Core::$Page->action->module_url))
									? $module_url 
									:'/admin/' ));
		// pr($return_url);
		// pr(Core::$Page);
		
		echo "<input type=hidden  
				value='$return_url' 
				name='".ReturnURL::$name."' 
			>
			";
		
		?>
		
		<p>
		
		<?if ($show_ok) {?>
		 <input type="submit" class="save_exit" name="save_exit" 
			 value="<?php echo $lang['general']['save_exit']; ?>" 
			 title="<?=$lang['general']['save_exit2']?>"  
			 />        
		<?}?>
		
		
		<?if ($show_apply) {?>		
			<input type="submit" class="save" name="save" 
			value="<?php echo $lang['general']['save']; ?>" 
			title="<?=$lang['general']['save2']?>" 
			<?if(!$reload){?>
			onclick = "pressButton(this); saveform(this.form); return false;"
			<?}?>
			/>
		<?}?>
		
		
		<?if ($show_cancel) {?>		
			<input type=button   class="cancel" onclick="location='<?=$return_url?>';" 
				value="<?=$lang['general']['cancel']; ?>"
				 title="<?=$lang['general']['cancel2']?>"
				/>
		<?}?>


		
	<?php
	}
	
	
	
	// return list of <options> with pages tree
	static function list_pages_options($params=array())
	{
		$result='';  
		$sub_prefix='';
		
		if($params) extract($params);
		//if (empty($sub_prefix)) $sub_prefix = "&nbsp;&nbsp;&nbsp;" ;
		
		//pr($params);
		
		$pages = Site::get_pages();
		//pr($pages);
		
		
		if ($pages)
		foreach ($pages as $page) 
		{	$page = (array)$page;
			if ($page['id']==val($without_id)) continue;
			if ($page['parent_id']!=val($parent_id)) continue;
			
			$select = (val($select_id)==$page['id'])? ' selected ' : '';
			
			$result.="<option $select value='{$page['id']}'>{$sub_prefix}{$page['title']}</option>\n";
			
			$result .= self::list_pages_options($params=
								array(
									'sub_prefix'  => $sub_prefix."&nbsp;&nbsp;&nbsp;",
									'select_id'   => $select_id, 
									'without_id'  => $without_id,
									'parent_id'		=> $page['id']
								 ));
		}
		return $result;
	}

// возвращает список языков в виде ассоциативного массива $lang_id=>$lang_title
static function  get_langs()
{
	$langs = array();
	$files = file_list($langs_dir = (Admin::$Config->module_dir . '/langs/' ));
	
	foreach ($files as $filename)
	{
		$lang_id = file_wo_ext($filename);
		
		$lang_title = $lang_id; // здесь нужно прочитать название языка из файла 
		
		$langs[$lang_id] = $lang_id;
	}
	
	
	return $langs;
}


// возвращает массив с настройками тем дизайна   
static function  get_themes()
{
	$themes = array();
	$dirs = dir_list($themes_dir = (Admin::$Config->module_dir . '/themes' ));
	
	foreach ($dirs as $theme_id)
	{
		if ($theme_id{0}=='.') continue;
		if (file_exists($theme_conf = $themes_dir ."/$theme_id/design_config.php"))
			$themes[$theme_id] = (object)read_array($theme_conf);
		else
			$themes[$theme_id] = (object)array(
				'id'	=> $theme_id,
				'title'	=> $theme_id,
			);
	}
	return $themes;
}

// возвразает список подключенных визуальных редакторов в виде ассоциативного массива $wys_id=>$wys_title
static function &get_wysiwygs()
{
	if (Admin::$Wysiwygs) return Admin::$Wysiwygs;
	
	// регистрируем визуальные редакторы
	foreach (Core::$Modules as $module)
	{
		if (empty($module->admin_wysiwyg)) continue;
		else
		{
			$wys = (object)$module->admin_wysiwyg;
			Admin::$Wysiwygs[$wys->id] = $wys;
		}
	}
	//pr(Admin::$Wysiwygs);	
	
	return Admin::$Wysiwygs;
}
	

	
	
	
	
/*
* show textarea +  wysiwyg editor + right panel + submit buttons
* @examlpe:
    
    show_wysiwyg('cont1');
    
    show_wysiwyg(
        'cont2',      
        $content,   
        $params = array(
            title=> $lang['general']['contents'], 
            description => $lang['general']['contents_desc'], 
            fieldname       => $fieldname,
            content         => $page[content],
            wysiwyg         => 1, 
            wysiwyg_name    => 'tiny_mce', 
            sumbit          => 1, 
            only_exit       => 0, 
            cancel_url      => 'javascript:history.back();', 
            pages           => 1, 
            files           => 1, 
            modules         => 1, 
    ));

*/
static function attach_wysiwyg_OLD($params)
{
    global $lang ;
    
    
    $default_params=array(

            
        'wysiwyg'         => 1, // show wysiwyg editor (tiny mce by default)
        'wysiwyg_name'    => 'tiny_mce', // property for future 
        'sumbit'          => 1, // show submit buttons
        'only_exit'       => 0, // if 1, show only save and cancel buttons, without 'apply'
        'cancel_url'      => 'javascript:history.back();', // redirect URL for cancel button 
        'pages'           => 1, // show "insert page link" in the right panel
        'files'           => 1, // show "insert inage or file" in the right panel
        'modules'         => 1, // show "insert module block" in the right panel 
     
    );
     
    // init default params, if it not set in $params argument
    foreach ($default_params AS $key=>$val)
    {
        if (!array_key_exists($key, $params)) $params[$key] =  $default_params[$key];
    }    
    
    
    $fieldtitle = val($params['fieldtitle'], $params['title']) ;
    $description = val($params['description']);
    $name  = $params['fieldname'] ;
    $content    = $params['content'] ;
    
    
    //Include TinyMCE.  
    include_once (MODULES_DIR. '/tinymce_editor/tinymce_inc.php');
    
?>

<style>
.toggleEditor_div {
    position2:relative;text-align:right;
}



.toggleEditor_div A {
    
    font-size:11px; margin-right:2px;
}

</style>




    <TABLE cellspacing=0 cellpadding=0 border=1 width=932 
    id=<?=$name?>_canvastable  style='border:0px solid #333; ' >
    
    <TR><TD colspan=1>
    
    <TABLE width=100% ><TR><TD style='padding: 0 0 4px 0px;' > 
    <span class="text1" id="<?=$name?>_fieldtitle" ><?=$fieldtitle?></span>
    <?if($description)echo"<div class=text6 >$description</div>";?>
    <TD align=right vAllign=bottom style='padding: 0 0 0 20px; vertical-align:bottom; font-size:11px; border:0px solid #ccc; '>
    
    <a href=# 
        onclick='toggleEditor("<?=$name?>","<?=$lang['page']['toggle_editor1']?>","<?=$lang['page']['toggle_editor2']?>"); return false;' 
        
        title='<?=$lang['page']['toggle_editor_tip']?>'
        id=<?=$name?>_toggleeditor_link
        ><?=$lang['page']['toggle_editor1']?></a>
    
    </TABLE> 
    
    <TR>
    <TD  style='vertical-align:top; border:0px solid #333;' id=<?=$name?>_canvastd > 
    

    <?/***  Generate Textarea + Wysiwyg  ***/?> 
    
        <textarea class="tinymce" name="<?=$name?>" style='width:606px;height:350px;'>
        <?php 
        if (isset($_POST[$name])) 
            echo $_POST[$name];
        else 
            echo htmlspecialchars($content); 
        ?>

        </textarea>


    <?/***   Generate RIGHT MENU    ***/?>    
    
    <TD width=11 style='vertical-align:top;' >
    <a href=# style='font-size:12px; color:#c0c0c0; text-decoration:none; border:1px solid #ddd; background:#f0f0f2; background:#fff;  padding:15px 0; margin:0 3px; display:block;'
    onclick='showHidePanel("<?=$name?>"); return false;'
    title='<?=$lang['page']['toggle_panel']?>'
    id="<?=$name?>_togglePanel_link"
    >►</a>

    </TD>

    <?php //show_common_submits($params[cancel_url], $params[only_exit]); ?>    
    
    <TD class="rightmenu" style='vertical-align:top; padding:0; '  id=<?=$name?>_rightpanel ><div class="menudiv text2" style='margin-top:0; text-align:center; padding:4px; font-weight:bold;'>  
    <?php echo $lang['page']['items']; ?></div> 
    
    
    
    <? /* select & inser image or file */
    
	
    
	?>
    <div class="menudiv">
        
        
		
		
        <span class=text3>
		<a href='?action=files&callback=reciveFile' target=_blank
		title='<?=$lang['page']['select_file']?>' id=file_manager_link
		>
		<img src='/system/modules/admin/themes/default/img/folder_explore.gif' style='float:right' >
		</a>
        <img src="system/modules/admin/themes/default/img/image_small.png" alt="" style='padding-right:2px; vertical-align:middle;' />
        <?=$lang['page']['insert_img_title']?>
        </span>

      
      <select id="choose_file" 
	  onchange="selectFolder(this.value);" >
      <option value='/' ><?=$lang['files']['folder'].': '.FILES_DIR ?></option>
	  
		<?php
				
		if ($dirs = dir_list(FILES_DIR,true))
			foreach ($dirs as $dir) 
			{
				$fulldir= FILES_DIR.'/'.$dir;
				echo "<option value='$dir' >{$lang['files']['folder']}: $fulldir</option>";
			}
		
		?>
	  
	  </select>
	  
        <script>
		
		 function reciveFile(file)
		{
			selectFile(file)
			//selectFolder('/')
		}
		
		 function selectFile(file)
		{
			if(!file) return;
			$('file4insert').value=file; 
			$('img_preview').src=file; 
			show('img_preview_body');
		}
		
		
		 function selectFolder(folder)
		{
			hide('select_file_'+selectFolder_selected)
			selectFolder_selected = folder
			
			show('select_file_'+folder);
			$('select_file_'+folder).selectedIndex=0
			
			$('file_manager_link').href = '?action=files&callback=reciveFile'
			+ (folder!='/'? ('&folder='+folder)  : '')
			
		}
		
		selectFolder_selected='/'
		
		</script>
            
			
			
			
		<?
		$dirs = array_merge(array('/'), $dirs);
		foreach ($dirs as $dir) 
		{
			
			$CURRENT_DIR=trim(FILES_DIR.'/'.$dir,  '/');
			//echo "'$CURRENT_DIR'";
			?>
			
            <select id="select_file_<?=$dir?>" <?=($dir!='/')? 'style="display:none"':''?> 
			onchange="if(this.value) selectFile('/<?=$CURRENT_DIR?>/'+this.value); " >
                <option ><?=$lang['files']['choose_file']?></option>
                
                <?php
				
                //if (!$images) echo "<option >".$lang[general][nothing_yet];
                if ($images = file_list($CURRENT_DIR))
                {
                    natcasesort($images);
                    foreach ($images as $image) 
					{
                		if (in_array( file_ext($image), 
								array('gif','jpg','png','jpeg'))							)    
							echo "<option value='$image' >$image</option>";
                    }
                }
                ?>
            </select>
			
		<?}?>




            
        <input id='file4insert' style='width:97%; height:18px; color:#03b; font-size:13px; margin:0;'>   
           
        <div align=left class=text4 style='border:0px solid #333;margin:0;'>
           
            <?=$lang['general']['insert'] ?>:  
           
            
            <b><a href="#" class=dashed onclick="insert_image_full('<?=FILES_DIR?>');return false;"
           title="<?=$lang['page']['insert_img2']?>"
           ><?=$lang['page']['insert_img']?></a></b>
            
            &nbsp;|&nbsp;
            <b><a href="#"  class=dashed onclick="insert_image_thumb('<?=FILES_DIR?>');return false;"
           title="<?=$lang['page']['insert_img_thumb2']?>"
           ><?=$lang['page']['insert_img_thumb']?></a></b>
            <br>
            
            <b><a href="#"  class=dashed onclick="insert_image_link('<?=FILES_DIR?>');return false;"
           title="<?=$lang['page']['insert_img_link2']?>"
           ><?=$lang['page']['insert_img_link']?></a></b>
         &nbsp;|&nbsp;
            
            <b><a href="#"  class=dashed onclick="insert_file_link('<?=FILES_DIR?>');return false;"
           title="<?=$lang['page']['insert_file_link2']?>"
           ><?=$lang['page']['insert_file_link']?></a></b>
           
            
            <!--<br>
            &nbsp;|&nbsp;
            <a href='?action=images' target=_blank
            title="<?php echo $lang['page']['add_img2']; ?>"
            ><?=$lang['page']['add_img']?></a>
			-->

           
        </div>
                           
            
        
        
		<div id=img_preview_body align=right style='display:none;'>
		<a href='#' style='color:#f00; font-size:13px; text-decoration:none;'
            onclick="showHide('img_preview_body'); return false;"  
            onfocus="this.blur();"
            title="<?php echo $lang['page']['preview2']; ?>"
            >[x]</a>
		
        <div id=img_preview_box style='overflow:auto; width:260px; height:220px; border:1px solid; border-color:#ddd #999 #999 #ddd; background:#fefefe;display:block;'>
                           
					   
			
			
				<table><tr>
                <td style='text-align:center; vertical-align:middle; width:260px; height:220px; padding:0;'>
                
                <img id=img_preview src="<?= /*$images[0]?"/FILES_DIR/".$images[0] :*/ "/system/modules/admin/themes/default/img/blank.gif"; ?>" class=fixPngNo  >

                </td></tr>
                </table>
                
        </div></div>
	
    </div>
    
    <?  /* select & insert page link */ ?>
    
    <div class="menudiv" style='margin-bottom:16px'>
        
            <span class=text3>
            <img src="system/modules/admin/themes/default/img/page_small.png" alt="" style='padding-right:2px; vertical-align:middle;' />
            <?=$lang['page']['insert_link_title']?>
            </span>
        
        
        <span>
				
            
            
            <select id="insert_pages">
            <?php
            echo list_pages_options( val($pages), '&nbsp;&nbsp;&nbsp;');
            ?>
                
            </select>
            
				
              
           <div align=left class=text4>
           <a href="#" class=dashed onclick="insert_page_link(); return false;"
           title="<?php echo $lang['page']['insert_link2']; ?>"
           ><?=$lang['page']['insert_link']; ?></a>
            
           &nbsp;|&nbsp;
            <a href='?action=newpage' target=_blank
            title="<?php echo $lang['page']['add_page2']; ?>"
            ><?=$lang['page']['add_page']?></a>
            </div>
        </span>
    </div>
    
    
    <?php show_common_submits($params['cancel_url'], $params['only_exit']); ?>
	
	
    
    </TD></TR></TABLE>
    
    
    
    <?    
} //end   function show_wysiwig()


	/* Выводит сообщение об ошибке или успещном выполнении */
	static function show_error(&$Page=null)
	{
		if (!$Page) $Page =& Core::$Page;
		
		if 	($Page->error)
			echo "<span class=message_error >{$Page->error}</span>";
		elseif (isset($Page->message))
			echo "<span class=message_success >{$Page->message}</span>";
	}
	
	static function show_toolbar($toolbar_id)
	{
		static $toolbars;
		if (!$toolbars)
		{
			$toolbars = array(true);
			foreach (Core::$Modules as $module)
				if (!empty($module->admin_toolbars))
					$toolbars = array_merge($toolbars, $module->admin_toolbars);
		}
		//pr($toolbars);
		//pr(Core::$Modules);
		Core::$Page->toolbar_title = val($toolbars[$toolbar_id]);
		
		$data = Admin::get_pages('menu=toolbar_'.$toolbar_id);
		$template = Admin::$Config->templ_dir .'/toolbar.php';
		$vars = array('Page'=> & Core::$Page);
		//pr($data);
		
		$toolbar = eval_template(
			$template, // PHP-шаблон
			$data, 	// данные для шаблона будут в переменой $data
			$vars 	// делаем доступными в шаблоне нужные переменные
		);
		
		return $toolbar;
	}
	
	
	
}



